package com.itany.shop.listener;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * @author MissChen
 * @date 2024年05月17日 14:46
 */
@WebListener
public class CountListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        //当创建了session,说明有人访问了网站
        // 此时在线人数+1
        // 如果是第一次访问，设置初始值为1
        // 由于该数据时向所有网站的人员开放的，因此通过application作用域进行存储
        ServletContext application=event.getSession().getServletContext();
        synchronized (this){
            Integer count= (Integer) application.getAttribute("count");
            if(count==null){
                count=1;
            }else{
                count++;
            }
            application.setAttribute("count",count);
        }

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        ServletContext application=event.getSession().getServletContext();
        synchronized (this){
            Integer count= (Integer) application.getAttribute("count");
            count--;
            application.setAttribute("count",count);
        }
    }
}
